package com.honey.mybatis.generator.inversion;

import com.honey.compilation.java.Field;
import com.honey.compilation.java.Method;
import com.honey.core.types.FullyQualifiedJavaType;
import com.honey.mybatis.generator.dependent.DependentModel;

/**
 * 注入模型分为两种INJECTION 和EXTEND
 * @author Administrator
 *
 */
public enum InversionModel {
	/** 注入模型  */
	INJECTION( new InjectionModel() ),
	
	/** 继承模型   */
	EXTEND( new ExtendModel() ),
	;
	
	protected final Inversion inversion;
	
	private InversionModel(Inversion inversion ){
		this.inversion  = inversion;
	}
	
//	/**
//	 * 调用的名称
//	 * @param variable 变量名称
//	 * @return
//	 */
//	public String call(String  variable){
//		return this.inversion.call(variable);
//	}
	
	public String call( DependentModel dependentMode , String variable){
		
		return this.inversion.call( dependentMode , variable );
		
	}
	/**
	 * 类的继承类型(用于extend模型)
	 * @return
	 */
	public FullyQualifiedJavaType extend(){
		return this.inversion.extend();
	}
	
	/**
	 * 类的属性(用于inversion模型)
	 * @return
	 */
	public Field[] inversionFiled( String fieldname ){
		return this.inversion.inversionFiled(fieldname);
	}
	
	/**
	 * 类的方法(用于inversion模型)
	 * @return
	 */
	public Method[] inversionMethod( String fieldname ){
		return this.inversion.inversionMethod(fieldname);
	}
	
}
